File systems utilize data structures, also referred to as the file system on-disk format, to maintain and organize data on non-volatile, i.e., persistent, storage, e.g., a volume, disk, hard drive, etc. File systems access and interpret these data structures to store and retrieve data for users and applications, or procedures or computer programs, e.g., when executing software instructions or computer code.
Currently, errors, i.e., corruptions, are discovered in the file system data structures when there is an attempt to access and/or interpret the faulty data structure during normal application or user-instigated processing. In the event of such error detection during normal processing, the identified errors are generally discovered at inconvenient and disruptive times, i.e., when users and/or applications are attempting to access and/or use the faulty data structure(s). Even if there is an effort to isolate and correct a reported error online, i.e., a self-healing supported system, some number of encountered corruptions cannot be resolved unless the volume is taken offline. And while the volume is offline the data and information stored thereon in its data structures is unavailable to any user or other application. These offline periods can be lengthy, further degrading system performance and user satisfaction. Thus, the timing of the detection of corruptions and the subsequent correction attempts are themselves relatively disruptive to normal system processing.
Data structure corruptions may also be discovered during a system boot up when the entire file system remains unavailable to users and other applications, i.e., offline, while a check is made of the system's storage volumes. These boot-up events entailing error checking at startup when a user and other applications are precluded from accessing the system's volumes can be time consuming, leading to further performance degradation and user dissatisfaction.
Thus, it is desirable to proactively scan for potential system volume corruptions utilizing a process that minimizes the impact to system performance and user satisfaction. It would also be desirable to shorten the time necessary to correct identified volume corruptions that require offline processing. Moreover, it would be desirable to separate the process of scanning for volume corruptions from the process for the correction of identified corruptions to reduce the amount of downtime when a system's volumes are unavailable to users and other processes.